package com.mashibing.singleton;

/**
 * 单列模式-懒汉式
 * 存在的问题：多线程并发的时候会有问题（返回的对象不一样，不满足单例的要求）
 */
public class Mgr03 {
    private static Mgr03 INSTANCE;
    private Mgr03(){}
    public static Mgr03 getInstance(){
        if (INSTANCE == null) {
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            INSTANCE = new Mgr03();
        }
        return INSTANCE;
    }

    public static void main(String[] args) {
        //Mgr03 instance = Mgr03.getInstance();
        //Mgr03 instance1 = Mgr03.getInstance();
        //System.out.println(instance == instance1);

        for (int i = 0; i <100 ; i++) {
            //函数式接口或匿名内部类只有一个方法的时候都可以用java8的lambda表达式来改写，简化代码
            new Thread(()->{
                System.out.println(Mgr03.getInstance().hashCode());
            }).start();
        }
    }


}
